{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一周测验 - 卷积神经网络的基本知识\n",
    "1. 问题 1\n",
    "你认为把下面这个过滤器应用到灰度图像会怎么样？\n",
    "⎡⎣⎢⎢⎢01101331−1−3−3−10−1−10⎤⎦⎥⎥⎥[01−1013−3−113−3−101−10]\n",
    "【 】 会检测45度边缘\n",
    "\n",
    "【★】 会检测垂直边缘\n",
    "\n",
    "【 】 会检测水平边缘\n",
    "\n",
    "【 】 会检测图像对比度\n",
    "\n",
    "Because the left part is positive, and the right part is negative.\n",
    "\n",
    "\n",
    "因为因为左边的部分是正的，右边的部分是负的。（博主注：左边亮，右边暗）\n",
    "\n",
    "2. 问题 2\n",
    "  假设你的输入是一个300×300的彩色（RGB）图像，而你没有使用卷积神经网络。 如果第一个隐藏层有100个神经元，每个神经元与输入层进行全连接，那么这个隐藏层有多少个参数（包括偏置参数）？\n",
    "\n",
    "【 】 9,000,001\n",
    "\n",
    "【 】 9,000,100\n",
    "\n",
    "【 】 27,000,001\n",
    "\n",
    "【★】 27,000,100\n",
    "\n",
    "  博主注：先计算W[1]=[l[1],X]=[100,300∗300∗3]=100∗300∗300∗3=27,000,000W[1]=[l[1],X]=[100,300∗300∗3]=100∗300∗300∗3=27,000,000，然后计算偏置bb，因为第一隐藏层有100个节点，每个节点有1个偏置参数，所以b=100b=100，加起来就是27,000,000+100=27,000,10027,000,000+100=27,000,100。\n",
    "\n",
    "3. 问题 3\n",
    "  假设你的输入是300×300彩色（RGB）图像，并且你使用卷积层和100个过滤器，每个过滤器都是5×5的大小，请问这个隐藏层有多少个参数（包括偏置参数）？\n",
    "\n",
    "【 】 2501\n",
    "\n",
    "【 】 2600\n",
    "\n",
    "【 】 7500\n",
    "\n",
    "【★】 7600\n",
    "\n",
    "  博主注：视频【1.7单层卷积网络】，05:10处。首先，参数和输入的图片大小是没有关系的，无论你给的图像像素有多大，参数值都是不变的，在这个题中，参数值只与过滤器有关。我们来看一下怎么算：单片过滤器的大小是5∗55∗5，由于输入的是RGB图像，所以信道nc=3nc=3，由此可见，一个完整的过滤器的组成是：5∗5∗nc=5∗5∗35∗5∗nc=5∗5∗3，每一个完整的过滤器只有一个偏置参数bb，所以，每一个完整的过滤器拥有5∗5∗3+1=765∗5∗3+1=76个参数，而此题中使用了100100个过滤器，所以这个隐藏层包含了76∗100=760076∗100=7600个参数。\n",
    "\n",
    "4. 问题 4\n",
    "你有一个63x63x16的输入，并使用大小为7x7的32个过滤器进行卷积，使用步幅为2和无填充，请问输出是多少？\n",
    "\n",
    "【★】 29x29x32\n",
    "\n",
    "【 】 16x16x32\n",
    "\n",
    "【 】 29x29x16\n",
    "\n",
    "【 】 16x16x16\n",
    "\n",
    "n = 63, f = 7, s = 2, p = 0, 32 filters.\n",
    "\n",
    "  博主注：我们先来看一下这个输出尺寸的公式：⌊nh+2p−fs+1⌋×⌊nw+2p−fs+1⌋⌊nh+2p−fs+1⌋×⌊nw+2p−fs+1⌋，我们就直接代入公式：⌊63+2×0−72+1⌋×⌊63+2×0−72+1⌋=⌊562+1⌋×⌊562+1⌋=29×29⌊63+2×0−72+1⌋×⌊63+2×0−72+1⌋=⌊562+1⌋×⌊562+1⌋=29×29，由于有32个过滤器，所以输出为29×29×3229×29×32。\n",
    "\n",
    "5. 问题 5\n",
    "你有一个15x15x8的输入，并使用“pad = 2”进行填充，填充后的尺寸是多少？\n",
    "\n",
    "【 】 17x17x10\n",
    "\n",
    "【★】 19x19x8\n",
    "\n",
    "【 】 19x19x12\n",
    "\n",
    "【 】 17x17x8\n",
    "\n",
    "6. 问题 6\n",
    "  你有一个63x63x16的输入，有32个过滤器进行卷积，每个过滤器的大小为7x7，步幅为1，你想要使用“same”的卷积方式，请问pad的值是多少？\n",
    "\n",
    "【 】 1\n",
    "\n",
    "【 】 2\n",
    "\n",
    "【★】 3\n",
    "\n",
    "【 】 7\n",
    "\n",
    "  博主注：“same”的卷积方式就是卷积前后的大小不变，也就是63x63x16的输入进行卷积后的大小依旧为63x63x16，这需要我们对输入过来的数据进行填充处理。我们来看一下这个输出尺寸的公式(假设输入图像的宽、高相同)：⌊n+2p−fs+1⌋⌊n+2p−fs+1⌋，由此我们可以推出来pp的值：p=s×n−n−s+f2=1×63−63−1+72=62=3p=s×n−n−s+f2=1×63−63−1+72=62=3。\n",
    "\n",
    "7. 问题 7\n",
    "你有一个32x32x16的输入，并使用步幅为2、过滤器大小为2的最大化池，请问输出是多少？\n",
    "\n",
    "【 】 15x15x16\n",
    "\n",
    "【 】 16x16x8\n",
    "\n",
    "【★】 16x16x16\n",
    "\n",
    "【 】 32x32x8\n",
    "\n",
    "8. 问题 8\n",
    "因为池化层不具有参数，所以它们不影响反向传播的计算。\n",
    "\n",
    "【 】 正确\n",
    "\n",
    "【★】 错误\n",
    "\n",
    "  博主注：由卷积层->池化层作为一个layer，在前向传播过程中，池化层里保存着卷积层的各个部分的最大值/平均值，然后由池化层传递给下一层，在反向传播过程中，由下一层传递梯度过来，“不影响反向传播的计算”这意味着池化层到卷积层（反向）没有梯度变化，梯度值就为0，既然梯度值为0，那么例如在W[l]=W[l]−α×dW[l]W[l]=W[l]−α×dW[l]的过程中，参数W[l]=W[l]−α×0W[l]=W[l]−α×0，也就是说它不再更新，那么反向传播到此中断。所以池化层会影响反向传播的计算。\n",
    "\n",
    "9. 问题 9\n",
    "在视频中，我们谈到了“参数共享”是使用卷积网络的好处。关于参数共享的下列哪个陈述是正确的？（检查所有选项。）\n",
    "\n",
    "【 】 它减少了参数的总数，从而减少过拟合。\n",
    "\n",
    "【★】 它允许在整个输入值的多个位置使用特征检测器。\n",
    "\n",
    "【 】 它允许为一项任务学习的参数即使对于不同的任务也可以共享（迁移学习）。\n",
    "\n",
    "【★】 它允许梯度下降将许多参数设置为零，从而使得连接稀疏。\n",
    "\n",
    "10. 问题 10\n",
    "在课堂上，我们讨论了“稀疏连接”是使用卷积层的好处。这是什么意思?\n",
    "\n",
    "【 】 正则化导致梯度下降将许多参数设置为零。\n",
    "\n",
    "【 】 每个过滤器都连接到上一层的每个通道。\n",
    "\n",
    "【★】 下一层中的每个激活只依赖于前一层的少量激活。\n",
    "\n",
    "【 】 卷积网络中的每一层只连接到另外两层。\n",
    "————————————————\n",
    "版权声明：本文为CSDN博主「何宽」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。\n",
    "原文链接：https://blog.csdn.net/u013733326/article/details/80046299"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
